package com.yupi.picturebackend.api.aliyunai.wordtopicture.model;

import cn.hutool.core.annotation.Alias;
import lombok.Data;

import java.io.Serializable;

/**
 * 阿里云文生图任务请求体类
 */
@Data
public class CreateWenToPictureRequest implements Serializable {

    /**
     * 模型
     */
    private String model = "wanx2.1-t2i-turbo";

    /**
     * 输入基本信息
     */
    private Input input;

    /**
     * 图像处理参数
     */
    private Parameters parameters;

    @Data
    public static class Input {
        /**
         * 必选，正向提示词
         */
        @Alias("prompt")
        private String prompt ;

        /**
         * 可选，反向提示词
         */
        @Alias("negative_prompt")
        private String negativePrompt ;
    }

    @Data
    public static class Parameters implements Serializable {
        /**
         * 可选，输出图像的分辨率。默认值是1024*1024。
         * 图像宽高边长的像素范围为：[512, 1440]，单位像素。可任意组合以设置不同的图像分辨率，最高可达200万像素。
         */
        private String size;

        /**
         * 可选，生成图片的数量。取值范围为1~4张，默认为4。
         */
        private Integer n;

        /**
         * 可选，随机数种子，用于控制模型生成内容的随机性。
         * seed参数取值范围是[0, 2147483647]。
         * 如果不提供，则算法自动生成一个随机数作为种子。
         * 如果给定了，则根据n的值分别为n张图片生成seed参数，例如n=4，算法将分别生成seed、seed+1、seed+2、seed+3作为参数的图片。
         */
        private Integer seed;

        /**
         * 可选，是否开启prompt智能改写。开启后会使用大模型对输入prompt进行智能改写，仅对正向提示词有效。
         * 对于较短的输入prompt生成效果提升明显，但会增加3-4秒耗时。
         * true：默认值，开启智能改写。
         * false：不开启智能改写。
         */
        @Alias("prompt_extend")
        private Boolean promptExtend = true;

        /**
         * 可选，是否添加水印标识，水印位于图片右下角，文案为“AI生成”。
         * false：默认值，不添加水印。
         * true：添加水印。
         */
        private Boolean watermark = false;
    }
}
